package main

import (
	"log"
	"net"

	grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
	api "gofunc/api/proto"
	"gofunc/internal/middleware"
	"gofunc/internal/services"
	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"
)

func main() {
	lis, err := net.Listen("tcp", "[::1]:9910")
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}

	// Даем старт нашей магии модификации входящих запросов
	grpcServer := grpc.NewServer(
		grpc.UnaryInterceptor(
			grpc_middleware.ChainUnaryServer(
				middleware.CloudRuInterceptor(), //отключить, в случае тестирования на контроллерах
			),
		),
	)

	reflection.Register(grpcServer)
	service := &services.HelloService{}

	api.RegisterHelloServiceServer(grpcServer, service)
	err = grpcServer.Serve(lis)

	if err != nil {
		log.Fatalf("Error strating server: %v", err)
	}
}
